package com.melody.controller;

/**
 * @Author: zengxz
 * @Description: 请求验证码controller类
 * @DateTime: 2025-05-13 17:04
 **/
import com.melody.common.component.SmsComponent;
import com.melody.entry.Result;
import com.melody.utils.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Random;

@RestController
@RequestMapping("/authCode")
public class VerificationCodeController {

    @Autowired
    private RedisUtil redisUtil; // 注入 Redis 工具类
    @Autowired
    private SmsComponent smsComponent;

    /**
     * 请求验证码
     * @param phone 用户ID（可以是手机号、邮箱或其他唯一标识）
     * @return 返回生成的验证码（实际项目中应发送到用户手机或邮箱，这里直接返回用于测试）
     */
    @GetMapping
    public Result<String> requestVerificationCode(@RequestParam String phone) {
        // 1.生成4位数字验证码
        String verificationCode = generateVerificationCode();
        // 2.发送验证码
        smsComponent.sendMsg(verificationCode, phone);
        // 3.将验证码存储到 Redis，设置过期时间为5分钟
        redisUtil.setVerificationCode("phone:code:" + phone, verificationCode, 60*5);
        // 4.返回验证码（实际项目中可以返回一个成功消息，验证码通过其他方式发送给用户）
        System.out.println("验证码已发送，验证码为：" + verificationCode);
        return Result.success("验证码已发送");
    }

    /**
     * 生成4位数字验证码
     * @return 验证码字符串
     */
    private String generateVerificationCode() {
        Random random = new Random();
        return String.format("%04d", random.nextInt(10000)); // 生成0000到9999的随机数
    }
}
